package com.test08.excelpoi05;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

/*
 * 制作出一个可以选择学生信息的界面程序
 * 总结：
 *     1.当界面显示完以后，如果其中的一个组件需要更换，正确的步骤是remove()然后再add(),然后再重写显示一下
 *     2.因为从集合直接导出指定类型的数组比较复杂所以这里的comboBox使用都是Object泛型的，这样就不用管类型的问题
 *     3.在文本框可以检测enter键，使用jButton.onClick()方法。可以使按钮按下，激活事件
 *     
 */
public class ExecFront {
	private JFrame jFrame;
	private JButton jButton;
	private JLabel jLabelRow;
	private JTextField jTextRow;
	private JLabel jLabelCol;
	private JTextField jTextCol;
	private JLabel jLabelFile;
	private JTextField jTextFile;
	private JButton jAdd;

	private File chooseFile;
	private JDialog jDialog;
	private JLabel jDialogLabel;
	private JButton jDialogButton;

	public ExecFront() {
		init();
	}

	public void init() {
		// 窗体
		jFrame = new JFrame();
		jFrame.setBounds(800, 100, 500, 400);
		jFrame.setLayout(null);
		// 设置按钮
		jButton = new JButton("开始转换");
		jButton.setBounds(70, 150, 80, 25);
		jFrame.add(jButton);

		// 设置开始行数
		jLabelRow = new JLabel("开始行数:");
		jLabelRow.setBounds(30, 10, 100, 25);
		jFrame.add(jLabelRow);
		jTextRow = new JTextField();
		jTextRow.setBounds(90, 10, 100, 25);
		jTextRow.setText(3 + "");
		jFrame.add(jTextRow);

		// 设置开始列数
		jLabelCol = new JLabel("开始列数:");
		jLabelCol.setBounds(30, 40, 100, 25);
		jFrame.add(jLabelCol);
		jTextCol = new JTextField();
		jTextCol.setBounds(90, 40, 100, 25);
		jTextCol.setText(6 + "");
		jFrame.add(jTextCol);

		// 设置文件位置
		jLabelFile = new JLabel("文件位置:");
		jLabelFile.setBounds(30, 80, 100, 25);
		jFrame.add(jLabelFile);
		jTextFile = new JTextField();
		jTextFile.setBounds(90, 80, 100, 25);
		jFrame.add(jTextFile);

		jAdd = new JButton("选择");
		jAdd.setBounds(200, 80, 100, 25);
		jFrame.add(jAdd);

		// 设置弹出框，每次提交后，都弹出来
		jDialog = new JDialog(jFrame, "信息提示", true);
		jDialog.setBounds(800, 100, 300, 150);
		jDialog.setLayout(null);
		jDialogLabel = new JLabel();
		jDialogLabel.setText("完成转换");
		jDialogLabel.setBounds(20, 20, 280, 40);
		jDialog.add(jDialogLabel);
		jDialogButton = new JButton("确定");
		jDialogButton.setBounds(100, 80, 80, 25);
		jDialog.add(jDialogButton);
		jDialog.setVisible(false);

		// 设置可见性、调用事件
		jFrame.setVisible(true);
		event();
	}

	public void event() {
		jFrame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}

		});
		this.jAdd.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				JFileChooser jfc = new JFileChooser();
				jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
				jfc.showDialog(new JLabel(), "选择");
				chooseFile = jfc.getSelectedFile();
				jTextFile.setText(chooseFile.getAbsolutePath());
			}
		});
		this.jButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				try {
					ExecHander.exec(chooseFile, Integer.parseInt(jTextCol.getText())-1,
							Integer.parseInt(jTextRow.getText())-1, 1);
					jDialog.setVisible(true);
				} catch (Exception e) {
				}
			}
		});
		jDialogButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jDialog.setVisible(false);
			}
		});
	}

	public static void main(String[] args) {
		new ExecFront();
	}
}
